Trajectory Analysis: 15 Days¶
[1]:
import copy
import sys
import os.path
import os
import numpy as np
[2]:
# path_to_binaryrvg = '/data/data_geodyn/inputs/icesat2/pre_processing/traj_files_rvg'
path_to_binaryrvg = '/data/data_geodyn/inputs/icesat2/setups'
# iisset.2018.287.bz2
years = [2018] #,2019]
days = np.arange(0, 367)
files_list = []
count_noletter = 0
countA = 0
countB = 0
for iyear,year in enumerate(years):
for iday,day in enumerate(days):
# filename = 'orbit.1807001.%d.%03d' % (year, day)
filename = 'iisset.%d.%03d' % (year, day)
# filename = '%d.%03d' % (year, day)
__filename = path_to_binaryrvg+ '/'+filename
arc = '%d.%03d' % (year, day)
if os.path.exists(__filename):
count_noletter+=1
files_list.append(arc)
if os.path.exists(__filename + 'A'):
countA += 1
pass
if os.path.exists(__filename + 'B'):
countB += 1
pass
if os.path.exists(__filename + '.gz'):
count_noletter+=1
files_list.append(arc + '')
if os.path.exists(__filename + 'A.gz'):
countA += 1
pass
if os.path.exists(__filename + 'B.gz'):
countB += 1
pass
if os.path.exists(__filename + '.bz2'):
count_noletter+=1
files_list.append(arc + '')
if os.path.exists(__filename + 'A.bz2'):
countA += 1
pass
if os.path.exists(__filename + 'B.bz2'):
countB += 1
pass
arc_list = files_list[1:]
arc_list = arc_list[1:39]
print('number of arcs:', len(arc_list))
print(arc_list)
number of arcs: 38
['2018.291', '2018.292', '2018.293', '2018.294', '2018.295', '2018.296', '2018.297', '2018.298', '2018.299', '2018.300', '2018.303', '2018.304', '2018.305', '2018.306', '2018.307', '2018.308', '2018.309', '2018.312', '2018.313', '2018.314', '2018.315', '2018.316', '2018.317', '2018.318', '2018.319', '2018.320', '2018.321', '2018.322', '2018.323', '2018.324', '2018.325', '2018.326', '2018.327', '2018.328', '2018.330', '2018.331', '2018.334', '2018.335']
[3]:
arc_list = arc_list[18:33]
arc_list
[3]:
['2018.313',
'2018.314',
'2018.315',
'2018.316',
'2018.317',
'2018.318',
'2018.319',
'2018.320',
'2018.321',
'2018.322',
'2018.323',
'2018.324',
'2018.325',
'2018.326',
'2018.327']
Run GEODYN over desired arcs for all dens:¶
[4]:
### Identify which arcs you want to run:
#------ A dictionary containing the run parameters ------
run_params = {}
run_params['arc'] = arc_list
run_params['satellite'] = 'icesat2'
run_params['SpecialRun_name'] = '_TrajAnalysis' #'_TrajAnalysis_fixed_cd'
run_params['verbose'] = False
run_params['accels'] = False
run_params['request_data'] = ['AdjustedParams',
'Trajectory_orbfil',
'Density',
'Residuals_obs',
'Residuals_summary',
]
[5]:
# %load_ext autoreload
# %autoreload 2
# import pickle
# sys.path.insert(0, '/data/geodyn_proj/pygeodyn/pygeodyn_develop/')
# from PYGEODYN import Pygeodyn
# # Obj_Geodyn = {}
# for imodel,val_model in enumerate( ['msis2']):#,'msis00' ,'msis86','dtm87','jaachi71']): # 'msis2' ,'msis86', 'msis00','dtm87',
# run_params1 = copy.deepcopy(run_params)
# run_params1['den_model'] = val_model
# run_params1['action'] = 'run'
# ### Load the data into an object
# Obj_Geodyn = Pygeodyn(run_params1)
# Obj_Geodyn.RUN_GEODYN()
[6]:
# import sys
# sys.exit()
Get Data¶
Write DataObject to a pickle¶
[7]:
# %load_ext autoreload
# %autoreload 2
# import pickle
# sys.path.insert(0, '/data/geodyn_proj/pygeodyn/pygeodyn_develop/')
# from PYGEODYN import Pygeodyn
# # Obj_Geodyn = {}
# for imodel,val_model in enumerate( ['msis2']):#,'msis00' ,'msis86']): # 'msis2' ,'msis86', 'msis00','dtm87', 'jaachia71'
# read_params = copy.deepcopy(run_params)
# read_params['den_model'] = val_model
# read_params['action'] = 'read'
# ### Load the data into an object
# Obj_Geodyn = Pygeodyn(read_params)
# Obj_Geodyn.getData()
# #### Pickle the object to save it
# print('Saving pickle')
# dir_save = '/data/data_geodyn/results/icesat2/'+'/'
# filehandler = open(dir_save+'icesat2'+run_params['SpecialRun_name']+'_313_327_'+read_params['den_model']+'.pkl', 'wb')
# pickle.dump(Obj_Geodyn, filehandler)
# filehandler.close()
# Obj_Geodyn = 0
# print('Saved pickle')
# import sys
# sys.exit(0)
[ ]:
[ ]:
Load Pickles¶
[8]:
# %reset out
# read the object in from a pickle
import pickle
sys.path.insert(0, '/data/geodyn_proj/pygeodyn/pygeodyn_develop/')
from PYGEODYN import Pygeodyn
sys.path.insert(0,'/data/geodyn_proj/pygeodyn/utils_pygeodyn_develop/util_dir/')
from common_functions import Pygeodyn_OBJECT_freeupmemory
dir_save = '/data/data_geodyn/results/icesat2/'
# Obj_Geodyn = {}
# for imodel,val_model in enumerate( ['msis86', 'msis00','dtm87','jaachia71']):
# # read_params = copy.deepcopy(run_params)
# # read_params['den_model'] = val_model
# filehandler = open(dir_save+'icesat2'+run_params['SpecialRun_name']+'_313_327_'+val_model+'.pkl', 'rb')
# Obj_Geodyn[val_model] = pickle.load(filehandler)
# filehandler.close()
# print(val_model)
# # Obj_data_pkl['msis2'].__dict__.keys()
# Obj_Geodyn = Obj_data_pkl
#
############ 'msis86', 'msis00','dtm87','jaachia71'
filehandler = open(dir_save+'icesat2'+'_TrajAnalysis'+'_313_327_'+'msis86'+'.pkl', 'rb')
Obj_Geodyn_msis86 = pickle.load(filehandler)
filehandler.close()
Obj_Geodyn_msis86 = Pygeodyn_OBJECT_freeupmemory(Obj_Geodyn_msis86)
print('msis86')
filehandler = open(dir_save+'icesat2'+'_TrajAnalysis'+'_313_327_'+'msis00'+'.pkl', 'rb')
Obj_Geodyn_msis00 = pickle.load(filehandler)
filehandler.close()
Obj_Geodyn_msis00 = Pygeodyn_OBJECT_freeupmemory(Obj_Geodyn_msis00)
print('msis00')
filehandler = open(dir_save+'icesat2'+'_TrajAnalysis'+'_313_327_'+'dtm87'+'.pkl', 'rb')
Obj_Geodyn_dtm87 = pickle.load(filehandler)
filehandler.close()
Obj_Geodyn_dtm87 = Pygeodyn_OBJECT_freeupmemory(Obj_Geodyn_dtm87)
print('dtm87')
filehandler = open(dir_save+'icesat2'+run_params['SpecialRun_name']+'_313_327_'+'msis2'+'.pkl', 'rb')
Obj_Geodyn_msis2 = pickle.load(filehandler)
filehandler.close()
Obj_Geodyn_msis2 = Pygeodyn_OBJECT_freeupmemory(Obj_Geodyn_msis2)
print('msis2')
filehandler = open(dir_save+'icesat2'+run_params['SpecialRun_name']+'_313_327_'+'jaachia71'+'.pkl', 'rb')
Obj_Geodyn_jaachia71 = pickle.load(filehandler)
filehandler.close()
Obj_Geodyn_jaachia71 = Pygeodyn_OBJECT_freeupmemory(Obj_Geodyn_jaachia71)
print('jaachia71')
msis86
msis00
dtm87
msis2
jaachia71
Read Memory usage:¶
[9]:
#!/usr/bin/env python
import psutil
# gives a single float value
print(psutil.cpu_percent())
# gives an object with many fields
print(psutil.virtual_memory())
# you can convert that object to a dictionary
print(dict(psutil.virtual_memory()._asdict()))
# you can have the percentage of used RAM
print(psutil.virtual_memory().percent)
# 79.2
# you can calculate percentage of available memory
print(psutil.virtual_memory().available * 100 / psutil.virtual_memory().total)
# 20.8
0.0
svmem(total=3971731456, available=1025040384, percent=74.2, used=2707906560, free=315379712, active=2617016320, inactive=811991040, buffers=0, cached=948445184, shared=17334272, slab=62181376)
{'total': 3971731456, 'available': 1025040384, 'percent': 74.2, 'used': 2707906560, 'free': 315379712, 'active': 2617016320, 'inactive': 811991040, 'buffers': 0, 'cached': 948445184, 'shared': 17334272, 'slab': 62181376}
74.2
25.808401080377575
[10]:
import gc
gc.collect()
[10]:
15
Plots¶
[11]:
import plotly.graph_objects as go
from plotly.offline import plot, iplot
from plotly.subplots import make_subplots
import plotly.express as px
config = dict({
'displayModeBar': True,
'responsive': False,
'staticPlot': False,
'displaylogo': False,
'showTips': False,
})
Plot: Residual Summaries¶
Resids = PCE - POD Trajectory
[12]:
%load_ext autoreload
%autoreload 2
from PYGEODYNAnalysis_icesat2PCEtrajectory import plot_residual_meas_summary
from PYGEODYNAnalysis_icesat2PCEtrajectory import rms_summary_table
Obj_list = [Obj_Geodyn_msis86,
Obj_Geodyn_msis00,
Obj_Geodyn_msis2,
Obj_Geodyn_dtm87,
Obj_Geodyn_jaachia71]
rms_summary_table(Obj_list)
fig = make_subplots(rows=2, cols=1,
subplot_titles=(["Mean Residuals per Arc", 'RMS of Fit per Arc']),
vertical_spacing = 0.1)
fig = plot_residual_meas_summary(fig, Obj_Geodyn_msis86 , 0)
fig = plot_residual_meas_summary(fig, Obj_Geodyn_msis00 , 1)
fig = plot_residual_meas_summary(fig, Obj_Geodyn_msis2 , 2)
fig = plot_residual_meas_summary(fig, Obj_Geodyn_dtm87 , 3)
fig = plot_residual_meas_summary(fig, Obj_Geodyn_jaachia71, 4)
fig.show(config=config)
+———————————————————+—————————————————————————+————————————————+
| Summary Across all Arcs |
+———————————————————+—————————————————————————+————————————————+
+ Density Model + Mean Residual (cm) + RMS of Fit +
+-------------------+-------------------------+----------------+
+ msis86 + 2.25333e+01 + 1.87513e-01 +
+ msis00 + 1.09333e+01 + 1.75633e-01 +
+ msis2 + -1.04000e+01 + 1.37793e-01 +
+ dtm87 + -2.29333e+01 + 3.89207e-01 +
+ jaachia71 + -1.21333e+01 + 2.51780e-01 +
+———————————————————+—————————————————————————+————————————————+
Plot: XYZ Component Residuals¶
[13]:
%load_ext autoreload
%autoreload 2
from PYGEODYNAnalysis_icesat2PCEtrajectory import plot_residuals_observed
fig = make_subplots(rows=3, cols=1,
subplot_titles=(['X', 'Y', 'Z']),
vertical_spacing = 0.1,
)
fig = plot_residuals_observed(fig, Obj_Geodyn_msis86 , 0)
fig = plot_residuals_observed(fig, Obj_Geodyn_msis00 , 1)
fig = plot_residuals_observed(fig, Obj_Geodyn_msis2 , 2)
fig = plot_residuals_observed(fig, Obj_Geodyn_dtm87 , 3)
fig = plot_residuals_observed(fig, Obj_Geodyn_jaachia71 , 4)
fig.update_layout(title="Observation Residuals (PCE - Observed , T.O.R.)")
# fig.show(config=config)
The autoreload extension is already loaded. To reload it, use:
%reload_ext autoreload